$NG.AllReady(function (page, { useAction, useValuesChange, useUpdateRows, useUpdateRow, useDataIndexChange, useClick }) {
    const mstform = $NG.getCmpApi("p_form_risk_list");
    const list = $NG.getCmpApi('grid');
    const user = $NG.getUser();
        // 解析参数
    
        //过滤列表
        // 获取全部列表数据
    
        if(page.oType=='view'){

        } else if(page.oType=='add'){
            
        }


    ////////////////////////////////////////////////////////////--mstform--////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////--mstform--////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////--mstform--////////////////////////////////////////////////////////////
    const param = parseUrlParams(location.href)
    if (page.oType == 'add'&&param.AppTitle.includes("投诉")) {
    mstform.getItem("u_info_source").setValue({
        value: '8570000000000008',
        label: '投诉'
    });
    // $NG.updateState((updater)=>{
    //     updater.data.p_form_risk_list.setProps({
    //         u_info_source:{
    //             label:'投诉',
    //             value:'8570000000000008'
    //         }
    //     })
    // })
    }
    useValuesChange(({ args }) => {

    mstform.getItem("u_put_dt").setValue(daysBetweenDates(mstform.getItem("u_put_dt").getItem()))
    }, "p_form_risk_list.u_put_dt")
    function daysBetweenDates(dateStr) {
    // 将传入的日期字符串转换为 Date 对象
    const inputDate = new Date(dateStr);
    // 获取当前日期
    const currentDate = new Date();

    // 将日期对象转换为时间戳（以毫秒为单位）
    const inputTime = inputDate.getTime();
    const currentTime = currentDate.getTime();

    // 计算两个日期之间的时间差（以毫秒为单位）
    const timeDifference = Math.abs(inputTime - currentTime);

    // 将时间差转换为天数
    const oneDay = 24 * 60 * 60 * 1000; // 一天的毫秒数
    const daysDifference = Math.floor(timeDifference / oneDay);

    return daysDifference;
    }
    if (mstform) {

    console.log("找到表单");
    //   mstform.setHidden("bill_dt", true);
    $NG.updateUI((updater) => {
        updater.fieldSetForm.p_form_risk_list.bill_dt.setProps({
            hidden: true
        })
    })
function uInvolveGys(params) {
    if (mstform.getItem("u_involve_gys").getValue() == 0||!mstform.getItem("u_involve_gys").getValue()) {
    $NG.updateUI((updater) => {
        console.log(updater);

        const fields = ["phid_supply_ent"];
        fields.forEach((field) => {
        updater.fieldSetForm.p_form_risk_list.PCFieldSetPanelGroup1[field].setProps({
            hidden: true, //隐藏
            // required: true, //必输
            // disabled: true, //只读
        });
        });
    });
    } else {
    $NG.updateUI((updater) => {
        console.log(updater);

        const fields = ["phid_supply_ent"];
        fields.forEach((field) => {
        updater.fieldSetForm.p_form_risk_list.PCFieldSetPanelGroup1[field].setProps({
            hidden: false, //隐藏
            required: true
        });
        });
    });
    }
}
    useValuesChange(({ args }) => {
        uInvolveGys()
    }, "p_form_risk_list.u_involve_gys")
    uInvolveGys();
    uType()
    function uType(params) {
        console.log(`风险类型`,mstform.getItem("u_type").getValue());
        if (mstform.getItem("u_type").getValue() == 1 ) {
            console.log(`测试人`);
        $NG.updateUI((updater) => {
            const fields = ["u_problem_degree"];
            fields.forEach((field) => {
            updater.fieldSetForm.p_form_risk_list.PCFieldSetPanelGroup1[field].setProps({
                hidden: false, //隐藏
                // required: true, //必输
                // disabled: true, //只读
            });
            });
        });
        $NG.updateUI((updater) => {
            const fields = ["u_risk_problem_cla", "u_risk_grad"];
            fields.forEach((field) => {
            updater.fieldSetForm.p_form_risk_list.PCFieldSetPanelGroup1[field].setProps({
                hidden: false, //隐藏
                required: true, //必输
                // disabled: true, //只读
            });
            });
        });
        } else if (mstform.getItem("u_type").getValue() == 2|| ! mstform.getItem("u_type").getValue()) {
        $NG.updateUI((updater) => {
            const fields = ["u_problem_degree"];
            fields.forEach((field) => {
            updater.fieldSetForm.p_form_risk_list.PCFieldSetPanelGroup1[field].setProps({
                hidden: true, //隐藏
                required: true, //必输
                // disabled: true, //只读
            });
            });
        });
        $NG.updateUI((updater) => {
            const fields = ["u_risk_problem_cla", "u_risk_grad"];
            fields.forEach((field) => {
            updater.fieldSetForm.p_form_risk_list.PCFieldSetPanelGroup1[field].setProps({
                hidden: true, //隐藏
                // required: true, //必输
                // disabled: true, //只读
            });
            });
        });
        }
    }
    uType()
    useValuesChange(({ args }) => {
        uType()
    }, "p_form_risk_list.u_type")
    function uIfYfqs(params) {
        if (mstform.getItem("u_if_yfqs").getValue() == 0 || !mstform.getItem("u_if_yfqs").getValue()) {
        $NG.updateUI((updater) => {
            console.log(updater);

            const fields = ["u_product_zu", "u_product_category", "u_version"];
            fields.forEach((field) => {
            updater.fieldSetForm.p_form_risk_list.PCFieldSetPanelGroup1[field].setProps({
                hidden: true, //隐藏
                // required: true, //必输
                // disabled: true, //只读
            });
            });
        });
        } else {
        $NG.updateUI((updater) => {
            console.log(updater);

            const fields = ["u_product_zu", "u_product_category", "u_version"];
            fields.forEach((field) => {
            updater.fieldSetForm.p_form_risk_list.PCFieldSetPanelGroup1[field].setProps({
                hidden: false, //隐藏
                required: true,
            });
            });
        });
        }
        hiddenform()
    }
    useValuesChange(({ args }) => {
        uIfYfqs()
    }, "p_form_risk_list.u_if_yfqs")
    uIfYfqs()
    hiddenform()
    function hiddenform() {
        if (mstform.getItem("u_if_yfqs").getValue() == '0') {
        $NG.updateUI((res) => {
            res.fieldSetForm.p_form_risk_list.PCFieldSetPanelGroup5.setProps({ hidden: true })
        })
        $NG.updateUI((res) => {
            res.fieldSetForm.p_form_risk_list.PCFieldSetPanelGroup4.setProps({ hidden: true })
        })
        } else {
        $NG.updateUI((res) => {
            res.fieldSetForm.p_form_risk_list.PCFieldSetPanelGroup5.setProps({ hidden: false })
        })
        $NG.updateUI((res) => {
            res.fieldSetForm.p_form_risk_list.PCFieldSetPanelGroup4.setProps({ hidden: false })
        })
        }
    }
    if (page.oType == "add" || page.oType == "edit" || page.oType == "copy") {
        // 获取初始值
        let cache = mstform.getItem("phid_pc").getValue();
        // 设置定时器
        const timer = setInterval(function () {
        const phid_pc = mstform.getItem("phid_pc").getValue();
        if (phid_pc !== undefined && phid_pc !== cache) {
            // 后续处理表体数据逻辑
            getPtInfoByPhid();
            cache = phid_pc;
        }
        }, 1000);
    }
    useValuesChange(({ args }) => {
        console.log("项目监听", args);

        // getProjectInfo();
        // cntMFilter()
        getPtInfoByPhid();
    }, "p_form_risk_list.phid_pc");
    } else {
    console.log("未找到表单");
    }

    if ((page.oType == "add")) {
    const data = $NG.getPageState().data.p_form_risk_list.phid_schemeid;
    let str = null;
    if (data == "8570000000000165") {
        str = {
        value: "8570000000000003",
        label: "现场回访",
        };
    } else if (data == "8570000000000167") {
        str = {
        value: "8570000000000002",
        label: "电话回访",
        };
    }
    $NG.updateState((updater) => {
        updater.data.p_form_risk_list.setProps({
        u_info_source: { ...str },
        });
    });
    // console.log(data.data.p_form_risk_list.phid_schemeid);
    }

    $NG.updateState((updater) => {
    updater.data.p_form_risk_list.setProps({
        u_propose_dt: formatDate(new Date(), "yyyy-mm-dd"),
        u_put_dt: formatDate(new Date(), "yyyy-mm-dd"),
        u_sb_per: {
        label: user.userName,
        value: user.userID,
        },
        phid_dept: {
        label: user.topOrg.oName,
        value: user.topOrg.phId,
        },
    });
    });
    useValuesChange(({ args }) => {
        console.log(args[0].u_info_source?.origin.phid);
    }, "p_form_risk_list.u_info_source");
    ////////////////////////////////////////////////////////////--字段变化逻辑--////////////////////////////////////////////////////////////

    if (page.oType == "add" || page.oType == "edit" || page.oType == "copy") {
    // 项目监听

    //单据引用后有值的字段
    let cache = mstform.getItem("phid_pc").getValue();
    const timer = setInterval(function () {
        try{
            const mstform = $NG.getCmpApi("p_form_risk_list");
        const phid_pc = mstform.getItem("phid_pc").getValue();
        if (phid_pc !== undefined && phid_pc !== cache) {
        //todo...后续处理表体数据逻辑
        // getProjectInfo();
        cache = phid_pc;
        }
        }catch(e){}
    }, 1000);
    }
    let gxrInfo = null;
    const timerG = setInterval(function () {
        try {
            const mstform = $NG.getCmpApi("p_form_risk_list");
            const gxr = mstform.getItem("u_customer_name").getValue();
            if (gxr !== undefined && gxr !== gxrInfo) {
                //todo...后续处理表体数据逻辑
                getGxrInfo();
                gxrInfo = gxr;
            }
        } catch (e) {}
    }, 1000);
    // // 监听干系人
    // useValuesChange(({ args }) => {
    //   console.log("干系人监听", args);
    //   getGxrInfo();
    // }, "p_form_risk_list.u_customer_name");

    //监听风险问题识别日期
    useValuesChange(({ args }) => {
    console.log(`监听风险问题识别日期`, args);
    if (daysBetween(args[0].u_put_dt, formatDate(new Date(), "yyyy-mm-dd"), true) < 0) {
        $NG.alert("时间不得大于当前日期！");
        $NG.updateState((updater) => {
        updater.data.p_form_risk_list.setProps({
            u_put_dt: formatDate(new Date(), "yyyy-mm-dd"),
            u_sustain_time: 0,
        });
        });
    }

    if (args[0].u_put_dt) {
        $NG.updateState((updater) => {
        updater.data.p_form_risk_list.setProps({
            u_sustain_time: daysBetween(mstform.getItem("u_put_dt").getValue(), formatDate(new Date(), "yyyy-mm-dd")),
        });
        });
    }
    }, "p_form_risk_list.u_put_dt");
    console.log("用户信息", user);

    ////////////////////////////////////////////////////////////--mstformFunction--////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////--mstformFunction--////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////--mstformFunction--////////////////////////////////////////////////////////////
    u_info_sourceFilter()
    function u_info_sourceFilter(){
        if(page.oType == 'add'||page.oType == 'edit'){
        if(!param.AppTitle.includes("投诉")){
            $NG.updateUI((updater) =>{
                updater.fieldSetForm.p_form_risk_list.u_info_source.setProps({
                    clientSqlFilter: "u_name not in ('投诉')",
                })
            });
        } else {
            $NG.updateUI((updater) =>{
                updater.fieldSetForm.p_form_risk_list.u_info_source.setProps({
                    clientSqlFilter: "u_name in ('投诉')",
                })
            }); 
        }
    }
    }
    setTimeout(()=>{
        getPtInfoByPhid()
    },500)
    function getPtInfoByPhid() {
    if (mstform.getItem("phid_pc").getValue()) {
        $NG.execServer("getPtInfoByPhid", { phid: mstform.getItem("phid_pc").getValue() }, function (res) {
        const datas = JSON.parse(res.data)[0].extendObjects;
        console.log(datas);
        const date = new Date().toISOString().split('T')[0];
        mstform.getItem("u_topic").setValue(`${date}${datas.pc_name}(${datas.pc_no})风险问题清单`)
        $NG.updateState((updater) => {
            updater.data.p_form_risk_list.setProps({
            //项目编码
            u_pc_no: datas.pc_no,
            // 项目经理
            phid_emp: {
                label: datas.project_manager_name,
                value: datas.project_manager_phid,
            },
            phid_org: {
                //事业部or组织
                value: datas.org_phid,
                label: datas.org_name,
            },
            u_regional_center: {
                //区域中心
                value: datas.regional_center_phid,
                label: datas.regional_center_name,
            },
            //产品线
            u_product_line: {
                value: datas.midwife_phid,
                label: datas.midwife_name,
            },
            //行业线
            u_industry_line: {
                value: datas.hyx_phid,
                label: datas.hyx_name,
            },
            // //计划开工日期
            // start_date: datas.start_date,
            // //计划完工日期
            // end_date: datas.end_date,
            // //售前顾问
            // u_sqgw: {
            //   value: datas.user_sqgw_phid,
            //   label: datas.user_sqgw_name,
            // },
            // //项目经理
            // u_project_manager: {
            //   value: datas.project_manager_phid,
            //   label: datas.project_manager_name,
            // },
            // //事业部
            // u_division: {
            //   value: datas.division_phid,
            //   label: datas.division_name,
            // },
            // //组织
            // phid_org_phid: {
            //   value: datas.phid_org_phid,
            //   label: datas.phid_org_name,
            // },
            // //区域中心
            // u_regional_center: {
            //   value: datas.regional_center_phid,
            //   label: datas.regional_center_name,
            // },

            // //客户名称
            // customer: {
            //   value: datas.customer_id,
            //   label: datas.customer_name,
            // },
            // //部门
            // u_dept: {
            //   value: datas.dept_phid,
            //   label: datas.dept_name,
            // },
            // //项目类型
            // u_pc_type: {
            //   value: datas.type_phid,
            //   label: datas.type_name,
            // },
            // //项目预算组织编码
            // budget_org_code: datas.budget_org_no,
            // //项目预算组织
            // budget_org_phid: {
            //   value: datas.budget_org_phid,
            //   label: datas.budget_org_name,
            // },
            });
        });
        });
    }
    }
    function getProjectInfo(isReturn = false, phid = mstform.getItem("phid_pc").getValue(), fun) {
    if (!mstform.getItem("phid_pc").getValue()) return;
    try {
        setTimeout(() => {
        $NG.execServer("getPtInfoByPhid", { phid: phid }, (res) => {
            const _data = JSON.parse(res.data)[0].extendObjects;
            console.log(`获取项目信息`, _data);
            if (isReturn) {
            fun(_data);
            } else {
            $NG.updateState((updater) => {
                updater.data.p_form_risk_list.setProps({
                u_pc_no: _data.pc_no, //项目编码
                // 项目经理
                phid_emp: {
                    label: _data.project_manager_name,
                    value: _data.project_manager_phid,
                },
                phid_org: {
                    //事业部or组织
                    value: _data.org_phid,
                    label: _data.org_name,
                },
                u_regional_center: {
                    //区域中心
                    value: _data.regional_center_phid,
                    label: _data.regional_center_name,
                },
                });
            });
            }
        });
        }, 100);
    } catch (err) {
        $NG.alert("获取项目信息发生失败请检查~");
    }
    }

    // 干系人信息查询
    function getGxrInfo() {
    $NG.execServer("getGxrInfo", { phid: mstform.getItem("u_customer_name").getValue() }, function (res) {
        console.log("干系人信息查询", res);
        const _data = JSON.parse(res.data)[0].extendObjects;
        console.log("信息", _data);
        $NG.updateState((updater) => {
        updater.data.p_form_risk_list.setProps({
            // JIRA号
            u_jira_no: "",
            // 客户层级
            u_custom_level: _data.u_level,
            // 客户职务
            u_customer_position: _data.u_position,
            // 客户单位名称
            u_customer_unit: _data.u_customer_name,
        });
        });
    });
    }
},
function (listPage, { useAction }) {
    //列表页面逻辑
    const list = $NG.getCmpApi('grid');
    const user = $NG.getUser();
    listFilter();
    let data = null;
    function listFilter() {
        setInterval(() => {
            // 判断地址是否发生变化
            if (data !== list.getRows()) {
                console.log(`变化`);
                const param = parseUrlParams(location.href)
                const listData = list.getRows();
                console.log(`获取列表`, listData);
                const arr = listData.reduce((value, item) => {
                    if (param.AppTitle !== "投诉上报") {
                        if (item.u_info_source != "8570000000000008") {
                            value.push(item);
                        }
                    } else {
                        if (item.u_info_source == "8570000000000008") {
                            value.push(item);
                        }
                    }
                    return value;
                }, []);
                list.clearRows().then(() => {
                    list.addRows([...arr]).then(()=>{
                        data = list.getRows();
                    });
                    console.log(`更新`);
                });
            }
        }, 10);
    }
});
// 格式化日期
function formatDate(dateStr, outputFormat) {
    const date = new Date(dateStr);

    if (isNaN(date)) {
    return "无效的日期字符串";
    }

    const year = date.getFullYear();
    const month = String(date.getMonth() + 1).padStart(2, "0");
    const day = String(date.getDate()).padStart(2, "0");
    const hours = String(date.getHours()).padStart(2, "0");
    const minutes = String(date.getMinutes()).padStart(2, "0");

    let formattedDate;

    switch (outputFormat) {
    case "yyyy-mm-dd":
        formattedDate = `${year}-${month}-${day}`;
        break;
    case "yyyy-mm-dd HH:mm":
        formattedDate = `${year}-${month}-${day} ${hours}:${minutes}`;
        break;
    // 可以根据需要继续添加其他格式的处理逻辑
    default:
        formattedDate = "不支持的输出格式";
    }

    return formattedDate;
}
// 计算2个日期之间得天数
function daysBetween(date1, date2, abs = false) {
    // 将日期字符串转换为 Date 对象
    const d1 = new Date(date1);
    const d2 = new Date(date2);

    // 检查输入是否是有效日期
    if (isNaN(d1) || isNaN(d2)) {
    throw new Error("Invalid date format. Use 'yyyy-mm-dd'.");
    }

    // 计算时间差（毫秒）
    const timeDiff = Math.abs(d2 - d1);
    if (abs) {
    if (d2 - d1 >= 0) {
        return 1;
    } else {
        return -1;
    }
    }

    // 将毫秒转换为天数
    const dayDiff = Math.ceil(timeDiff / (1000 * 60 * 60 * 24));

    return dayDiff;
}
function parseUrlParams(url) {
    const paramsObj = {};
    const queryString = url.split('?')[1];
    const paramPairs = queryString.split('&');
    paramPairs.forEach((paramPair) => {
        const [key, value] = paramPair.split('=');
        const decodedValue = decodeURIComponent(value);
        paramsObj[key] = decodedValue;
    });
    return paramsObj;
}